package com.lnking.lnkingplace.service;

import com.lnking.lnkingplace.model.dto.statistic.*;
import com.lnking.lnkingplace.model.dto.statistic.cultureEnterprise.CultureEnterpriseStatisticsDto;
import com.lnking.lnkingplace.model.dto.statistic.fourEnterprise.FourEnterpriseStatisticsDto;
import com.lnking.lnkingplace.model.request.exhibition.ExhibitionStatisticSearchRequest;
import com.lnking.lnkingplace.model.request.statistic.*;
import com.lnking.starter.mybatis.entity.Page;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;


/**
 * <p>
 *  服务类
 * </p>
 *
 * @author sn
 * @since 2022-07-14
 */
public interface IStatisticsService {

    /**
     * 人员行业分布
     * @param params
     * @return
     */
    UserPlaceDto userPlace(UserPlaceRequest params);


    /**
     * 督察抽查统计
     * @param
     * @return
     */
    InspectDto inspect();

    Map<String, Integer> getTodayCheckRate(PersonCheckStatusSearchParams params);

    /**
     * 综合数据展示
     * @return
     */
    IntegratedDto integrated();

    /**
     * 隔离人员数据
     * @return
     */
    IsolationDto isolation();

    /**
     * 隔离观察房间情况
     * @return
     */
    CommonIsolationDto isolationRoom();

    /**
     * 隔离观察人员情况
     * @return
     */
    CommonIsolationDto isolationUser();

    /**
     * 驻点团队人员情况
     * @return
     */
    CommonIsolationDto isolationWorker();

    /**
     * 导出场所或者街道统计数据
     * @param params
     * @param response
     */
    void exportExcel(StatisticExportParams params, HttpServletResponse response) throws Exception;


    Map<String, Integer> outsiders(BaseStatisticParams params);

    InspectStatisticDto inspectStatistic(InspectStatisticParams params);

    Map<String, Object> getExhibitionStatisticInfo(ExhibitionStatisticSearchRequest params);

    List<StatisticCheckTypeDto> personPlaceData(UserPlaceRequest params);


    AttractionsNumDto attractions(AttractionsRequest params);

    CultureEnterpriseStatisticsDto cultureEnterpriseStatistics();

    FourEnterpriseStatisticsDto fourEnterpriseStatistics();

    List<ExhibitionDto> exhibition(ExhibitionRequest params);

    List<ExhibitionDto> exhibitionLast();

    Object inspectList(Page page);

    List<PlaceTypeCheckListDto> placeTypeCheckList(UserPlaceRequest params);

    Object getExhibitionPlaceList(ExhibitionPlaceListRequest params);

    Object importantCompanyList(ExhibitionPlaceListRequest params);

    Object placeStreetTypeList(Page params);

    Object inspectTrackInfo(Page page);
}
